package com.motong.gongdan.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.motong.gongdan.entity.LampRequest;
import com.motong.gongdan.vo.H5Vo.common.GroupCountVo;
import com.motong.gongdan.vo.H5Vo.lamp.query.LampDropDownQuery;
import com.motong.gongdan.vo.H5Vo.lamp.query.LampListQuery;
import com.motong.gongdan.vo.H5Vo.lamp.vo.DashboardLampRequestVo;
import com.motong.gongdan.vo.H5Vo.lamp.vo.LampListVo;
import com.motong.gongdan.vo.system.lampRequest.query.LampTimingQuery;
import com.motong.gongdan.vo.system.lampRequest.vo.LampTimingTypeGroupVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface LampRequestMapper extends BaseMapper<LampRequest> {

    /**
     * 获取联络灯请求列表
     *
     * @param page  分页参数
     * @param query 请求参数
     * @return 联络灯请求列表
     */
    Page<LampListVo> getList(Page<LampRequest> page, @Param("query") LampListQuery query);

    /**
     * 获取联络灯请求下拉
     *
     * @param query 请求参数
     */
    List<LampListVo> dropDown(@Param("query") LampDropDownQuery query);

    /**
     * 根据设备和类型获取看板信息
     *
     * @param deviceIds 设备id
     * @param typeList  联络灯类型
     */
    List<DashboardLampRequestVo> listByDeviceIdsAndType(@Param("deviceIds") List<Long> deviceIds, @Param("typeList") List<String> typeList);

    /**
     * 联络灯请求按类型数量统计
     *
     * @param groupId 分组
     */
    List<GroupCountVo> getLampRequestTypeCount(@Param("groupId") String groupId);

    Page<LampTimingTypeGroupVo> durationGroupByType(Page<LampRequest> page, @Param("query") LampTimingQuery query);
}